package jrpc

import (
	"encoding/json"
)

// 声明数据包类型
const (
	PacketWelcome = iota + 1
	PacketStart
	PacketLeave
	PacketError
)

// Message
// 消息数据包 一般用于接收数据包
type Message struct {
	PacketType uint32          `json:"packetType"`
	Data       json.RawMessage `json:"data"`
}

// Unmarshal
// 解析二进制数据至 Message
func Unmarshal(data []byte) *Message {
	var m Message

	if err := json.Unmarshal(data, &m); err != nil {
		return nil
	}

	return &m
}

// Marshal
// 序列化当前数据包
func (p *Message) Marshal() []byte {
	data, err := json.Marshal(p)
	if err != nil {
		panic(err.Error())
		return nil
	}

	return data
}
